//package com.cbgolf.oa.manager;
//
//import android.app.Service;
//import android.content.Intent;
//import android.os.Handler;
//import android.os.IBinder;
//import android.os.Looper;
//import android.os.Message;
//import android.support.annotation.Nullable;
//import android.util.Log;
//import com.cbgolf.oa.net.WebAPI;
//import com.cbgolf.oa.user.UserData;
//import com.cbgolf.oa.util.DateUtil;
//import com.cbgolf.oa.util.Util;
//import java.net.URI;
//import java.net.URISyntaxException;
//import org.java_websocket.client.WebSocketClient;
//import org.java_websocket.drafts.Draft_17;
//import org.java_websocket.handshake.ServerHandshake;
//
///**
// * @author seiya
// * @date 2017/2/8
// */
//
//public class WebSocketManager extends Service {
//
//  private static WebSocketClient webSocketClient;
//  private String address = "ws://" + WebAPI.IP + "/backend/websocket";
//  private final int WHAT = 1;
//  private final String MSG_ACTION = "PUSH_MESSAGE";
//
//  private int timeOut = 60 * 60 * 1000;
//  //重连时间间隔
//  private int disTime = 5000;
//  //重连次数
//  private int times = 0;
//  private boolean firstIn = true;
//  private boolean ConnectSuccess = false;
//
//
//  Handler handler = new Handler(Looper.getMainLooper()) {
//    @Override
//    public void handleMessage(Message msg) {
//      String time = (String) msg.obj;
//      if (msg.what == WHAT) {
//        Intent intent = new Intent();
//        intent.setAction(MSG_ACTION);
//        intent.putExtra("time", time);
//        sendBroadcast(intent);
//      }
//    }
//  };
//
//  private Runnable run = new Runnable() {
//    @Override
//    public void run() {
//      if (!ConnectSuccess) {
//        reConnect();
//        times++;
//        Log.e("webSocket正在尝试重新连接：", "第" + times + "次");
//        handler.postDelayed(this, disTime);
//        if (disTime * times >= timeOut) {
//          handler.removeCallbacks(this);
//          Log.e("webSocket重连超时：", "放弃重连");
//        }
//      } else {
//        try {
//          Log.e("webSocket重连成功：", DateUtil.stampToDate(System.currentTimeMillis() + "") + "");
//        } catch (Exception e) {
//
//        }
//      }
//    }
//  };
//
//  @Nullable
//  @Override
//  public IBinder onBind(Intent intent) {
//    return null;
//  }
//
//  @Override
//  public int onStartCommand(Intent intent, int flags, int startId) {
//    if (Util.isNetWorkConnected() && null != UserData.getUser()) {
//      initWebSocket();
//    }
//    return super.onStartCommand(intent, flags, startId);
//  }
//
//  @Override
//  public void onDestroy() {
//    closeWebSocket();
//    try {
//      Log.e("webSocket关闭:", DateUtil.stampToDate(System.currentTimeMillis() + "") + "");
//    } catch (Exception e) {
//      e.printStackTrace();
//    }
//    super.onDestroy();
//  }
//
//  @Override
//  public boolean stopService(Intent name) {
////        startService(name);
//    return super.stopService(name);
//  }
//
//
//  private void initWebSocket() {
//    if (null == webSocketClient) {
//      try {
//        webSocketClient = new WebSocketClient(new URI(address), new Draft_17()) {
//          @Override
//          public void onOpen(ServerHandshake serverHandshake) {
//            try {
//              webSocketClient.send(phone + "," + token);
//            } catch (Exception e) {
//
//            }
//          }
//
//          @Override
//          public void onMessage(String s) {
//            //你的账号在其他设备登录，如非本人操作，请重新修改密码
//            Log.e("webSocket收到消息:", s + "");
//            if (!Util.isNull(s) && s.contains("你的账号在其他设备登录")) {
//              handler.obtainMessage(WHAT, DateUtil.stampToDate(System.currentTimeMillis()))
//                  .sendToTarget();
//            }
//          }
//
//          @Override
//          public void onClose(int i, String s, boolean b) {
//            ConnectSuccess = false;
//            Log.e("webSocket关闭原因:", b ? "服务器关闭" : "本地关闭");
//            Log.e("webSocket关闭信息:", s + "");
//            Log.e("webSocket关闭code:", i + "");
//          }
//
//          @Override
//          public void onError(Exception e) {
//            Log.e("onError:", e.toString() + "");
//          }
//        };
//        webSocketClient.connect();
//      } catch (URISyntaxException e) {
//        e.printStackTrace();
//      }
//    }
//
//  }
//
//  public void reConnect() {
//    try {
//      if (null != UserData.getUser()) {
//        webSocketClient = null;
//        System.gc();
//        initWebSocket();
//      } else {
//        handler.removeCallbacks(run);
//        closeWebSocket();
//      }
//    } catch (Exception e) {
//      Log.e("reConnect_catch:", e.toString() + "");
//    }
//  }
//
//  public static void closeWebSocket() {
//    if (null != webSocketClient) {
//      try {
//        webSocketClient.close();
//        System.gc();
//      } catch (Exception e) {
//
//      } finally {
//        webSocketClient = null;
//
//      }
//    }
//  }
//
//  public static boolean isConnectd() {
//    Log.e("webSocket是否正在连接？",
//        (null != webSocketClient && webSocketClient.getConnection().isOpen()) ? "是的" : "没有连接");
//    return null != webSocketClient && webSocketClient.getConnection().isOpen();
//  }
//
//}
